1. Field of the Invention
The present invention relates to computer architectures for the parallel processing of data.
2. Description of the Related Art
The Multiple-Instruction Multiple Data (MIMD) parallel computer model is a general purpose model which supports different software algorithms running on different processors. If several of the processors are executing the same piece of software, there could be unnecessary duplication of program memory, or congestion related to fetching instructions from a common shared memory. Program memory caching is a common way to help alleviate this situation, but as the number of processors grows, the caching technique may become less effective. Instruction caching is also quite complex, tending to increase silicon area and processor power consumption. Systems-On-Chip (SOCs) have limited silicon area, processor speed, and power, and should avoid wasting any of these resources.
Some data manipulation algorithms lead one to consider the Single-Instruction Multiple-Data (SIMD) parallel computer model. This model assumes that most of the time the same computer instruction can be applied to many different sets of data in parallel. If this assumption holds, SIMD represents a very economical parallel computing paradigm. However, some complicated algorithms have many data dependent control structures which would require multiple instruction streams for various periods of time. Adding to this complication is the possible need to support multiple algorithms simultaneously, each of which may operate on a different set of (independent) data. Thus, large amounts of program memory may be needed.